package com.kantboot.user.account.service;

import com.kantboot.user.account.domain.dto.UserAccountRegisterDTO;
import com.kantboot.user.account.domain.dto.UserAccountSendVerificationCodeDTO;
import com.kantboot.user.account.domain.vo.LoginVO;

public interface IUserAccountRegisterService {

    /**
     * 通过用户名和密码注册新用户
     * 通常不适用于生产环境
     * @param username 用户名
     * @param password 密码
     * @return 登录信息
     */
    LoginVO registerByUsernameAndPassword(
            String username, String password);

    /**
     * 发送注册的验证码
     * @param sendVerificationCodeDTO 发送验证码的DTO
     */
    void sendRegisterVerificationCode(UserAccountSendVerificationCodeDTO sendVerificationCodeDTO);

    /**
     * 根据手机号和验证码注册
     * @param dto 手机号、验证码、密码
     * @return 登录信息
     */
    LoginVO registerByPhoneAndVerificationCode(UserAccountRegisterDTO dto);

    /**
     * 根据邮箱和验证码注册
     * @param dto 邮箱、验证码、密码
     * @return 登录信息
     */
    LoginVO registerByEmailAndVerificationCode(UserAccountRegisterDTO dto);

}
